﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccessComponents;
using DAL;
using System.Collections.ObjectModel;
namespace BusinessLogicLayer
{
    public class LotniskoBL : IBusinessLogicLayer<Lotnisko>
    {
        private DbOperations dal = new DbOperations();

        /// <summary>
        /// Funkcja dodawająca lotnisko do bazy danych
        /// </summary>
        /// <param name="objDodaj">Obiekt Lotnisko</param>
        /// <returns></returns>
        public int dodaj(Lotnisko objDodaj)
        {
            return dal.dodajLotnisko(objDodaj);
        }

        /// <summary>
        /// Funkcja usuwająca lotnisko z bazy danych
        /// </summary>
        /// <param name="idusun">Id lotnisko do usunięcia</param>
        public void usun(int idusun)
        {
            dal.usunLotnisko(idusun);
        }

        /// <summary>
        /// Funkcja akutualizująca lotnisko w bazie danych
        /// </summary>
        /// <param name="objAktualizuj">Obiekt lotnisko zawierający inforamacje do aktualizacji</param>
        public void aktualizuj(Lotnisko objAktualizuj)
        {
            dal.aktualizujLotnisko(objAktualizuj);
        }

        /// <summary>
        /// Pobiera lotnisko na podstawie id objDodaj
        /// </summary>
        /// <param name="idpobierz">Id lotnisko</param>
        /// <returns>Obiekt Lotnisko</returns>
        public Lotnisko pobierz(int idpobierz)
        {
            return dal.pobierzLotnisko(idpobierz);
        }

        /// <summary>
        /// Funkcja zwraca liste lotnisk znajdujących się w bazie
        /// </summary>
        /// <returns>Lista lotnisk</returns>
        public ObservableCollection<Lotnisko> pobierzListe()
        {
            return dal.pobierzListeLotnisko();
        }

        /// <summary>
        /// Funkcja aktulizująca lotniska w bazie
        /// </summary>
        /// <param name="lista"></param>
        /// <returns></returns>
        public bool aktualizujListe(ObservableCollection<Lotnisko> lista)
        {
            foreach (Lotnisko lotnisko in lista)
            {
                // Jeżeli id == 0 to znaczy że lotniska niema w bazie i należy je dodać
                if (lotnisko.Id_lotniska == 0)
                {
                    this.dodaj(lotnisko);
                }else
                    this.aktualizuj(lotnisko);
            }
            return true;
        }

        /// <summary>
        /// Funkcja usuwająca lotniska z bazy
        /// </summary>
        /// <param name="lista"></param>
        /// <returns></returns>
        public bool usun(ObservableCollection<Lotnisko> lista)
        {
            foreach (Lotnisko lotnisko in lista)
            {
                this.usun(lotnisko.Id_lotniska);
            }
            return true;
        }
    }    
}
